home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-10-23 | 4.7 KB | 186 lines | [TEXT/CWIE] |
- unit MyOOMenus;
-
- interface
-
- uses
- Types, MyFMenus;
-
- var
- editEnabled: boolean;
-
- procedure StartupOOMenus;
- procedure DisplayMenuBar;
- procedure DoDefaultMenu (themenu, theitem: integer);
- function SetOOMenuBar: boolean;
-
- implementation
-
- uses
- Traps, Balloons, Devices, MyTypes, MySystemGlobals, MyMenus, MyStrings, MyVersionResource,
- BaseGlobals, MyFMenus, MyOOMainLoop, AERegistry, MyAEUtils, AEObjects, MyStartup;
-
- function SetOOMenuBar: boolean;
- begin
- SetOOMenuBar := FrontObject.SetMenuBar;
- end;
-
- function HandleEditMenu (var event, reply: AppleEvent; refcon: longInt): OSErr;
- begin
- event := event; { UNUSED! }
- reply := reply; { UNUSED! }
- FrontObject.DoEditMenu(refcon);
- HandleEditMenu := noErr;
- end;
-
- procedure DoDefaultMenu (themenu, theitem: integer);
- var
- save: grafPtr;
- DAName: str255;
- oe: OSErr;
- begin
- if themenu = M_Apple then begin
- GetPort(save);
- GetMenuItemText(GetMenuHandle(M_apple), theitem, DAName);
- oe := OpenDeskAcc(DAName);
- SetPort(save);
- end else if themenu = M_Edit then begin
- if has_AppleEvents then begin
- case theitem of
- EMUndo:
- SendSelfSimpleEvent(kAECoreSuite, kAEUndo);
- EMCut:
- SendSelfSimpleEvent(kAECoreSuite, kAECut);
- EMCopy:
- SendSelfSimpleEvent(kAECoreSuite, kAECopy);
- EMPaste:
- SendSelfSimpleEvent(kAECoreSuite, kAEPaste);
- EMClear:
- SendSelfSimpleEvent(kAECoreSuite, kAEDelete);
- EMSelectAll:
- SendSelfSimpleEvent(kAECoreSuite, kAESelect); { hmmm }
- otherwise
- FrontObject.DoEditMenu(theitem);
- end;
- end else begin
- FrontObject.DoEditMenu(theitem);
- end;
- end;
- end;
-
- procedure DoClose;
- begin
- DoCloseAll(last_event_had_option);
- end;
-
- procedure SetCloseMenu (themenu, theitem: integer);
- var
- fw: windowPtr;
- er: EventRecord;
- dummy: boolean;
- begin
- fw := FrontWindow;
- if fw = nil then begin
- SetIDItemEnable(themenu, theitem, (fw <> nil) & windowPeek(fw)^.goAwayFlag & (GetWType(fw) <> WT_NotMine));
- end
- else begin
- SetIDItemEnable(themenu, theitem, windowPeek(fw)^.goAwayFlag);
- end;
- dummy := OSEventAvail(everyEvent, er);
- last_event_had_option := BAND(er.modifiers, optionKey) <> 0;
- if option_close_str > 0 then begin
- if last_event_had_option then begin
- SetIDItem(themenu, theitem, GetGlobalString(option_close_str));
- end
- else begin
- SetIDItem(themenu, theitem, GetGlobalString(normal_close_str));
- end;
- end;
- end;
-
- procedure SetEditMenus (menu, item: integer);
- begin
- menu := menu; { UNUSED! }
- FrontObject.SetEditMenuItem(item);
- end;
-
- procedure DoQuit;
- begin
- if has_AppleEvents then begin
- SendSelfSimpleEvent(kCoreEventClass, kAEQuitApplication);
- end
- else begin
- quitNow := true;
- end;
- end;
-
- procedure DisplayMenuBar;
- var
- dummyb: boolean;
- begin
- dummyb := SetOOMenuBar;
- DrawMenuBar;
- end;
-
- function InitOOMenus(var msg: integer): OSStatus;
- var
- junk: OSErr;
- HandleEditMenuProc : UniversalProcPtr;
- begin
- msg := msg; { Unused }
- quitNow := false;
- editEnabled := true;
-
- MH_Apple := GetFMenu(M_Apple);
- AppendResMenu(MH_Apple, 'DRVR');
- InsertMenu(MH_Apple, 0);
-
- MH_File := GetFMenu(M_File);
- InsertMenu(MH_File, 0);
- MH_Edit := GetFMenu(M_Edit);
- InsertMenu(MH_Edit, 0);
-
- {$IFC 0}
- M_HM_Help_I := -1;
- hstr := GetGlobalString(help_menu_text);
- if has_HelpMgr and (hstr <> '') then begin
- GetVersion(vers);
- SPrintS3(hstr, hstr, vers.name, '', '');
- oe := HMGetHelpMenuHandle(mh);
- if (oe = noErr) and (mh <> nil) then begin
- AppendMenu(mh, hstr);
- M_HM_Help_I := CountMItems(mh);
- AddFCommand(kHMHelpMenuID, M_HM_Help_I, CHelp);
- end;
- end;
- {$ENDC}
-
- if has_AppleEvents then begin
- HandleEditMenuProc := NewAEEventHandlerProc(@HandleEditMenu);
- junk := AEInstallEventHandler(kAECoreSuite, kAEUndo, HandleEditMenuProc, EMUndo, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAECut, HandleEditMenuProc, EMCut, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAECopy, HandleEditMenuProc, EMCopy, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAEPaste, HandleEditMenuProc, EMPaste, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAEDelete, HandleEditMenuProc, EMClear, false);
- junk := AEInstallEventHandler(kAECoreSuite, kAESelect, HandleEditMenuProc, EMSelectAll, false);
- end;
-
- SetFBoth(Cclose, DoClose, SetCloseMenu);
- SetFCommand(Cquit, DoQuit);
- SetFSetMenu(Cundo, SetEditMenus);
- SetFSetMenu(Ccut, SetEditMenus);
- SetFSetMenu(Ccopy, SetEditMenus);
- SetFSetMenu(Cpaste, SetEditMenus);
- SetFSetMenu(Cclear, SetEditMenus);
- SetFSetMenu(Cselectall, SetEditMenus);
- SetFMenus;
- InitOOMenus := noErr;
- end;
-
- procedure StartupOOMenus;
- begin
- StartupFMenus;
- StartupMainLoop;
- SetStartup(InitOOMenus, nil, 0, nil);
- end;
-
- end.